package cn.mdmm.base;

import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import net.sourceforge.groboutils.junit.v1.MultiThreadedTestRunner;
import net.sourceforge.groboutils.junit.v1.TestRunnable;

/**
 *junits测试类，其他测试类只需要继承该类，就可以直接使用spring
 */

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring/applicationContext.xml")
public abstract class BaseSpringJunitTestCase{
    @Before
    public void init() throws Exception {
    	
    }
    
    /**
     * 多线程测试<br>
     * <br>  
     * 创建人：邓强   <br>
     * 创建时间：2018年1月18日 下午1:53:02    <br> 
     * 修改人：  <br>
     * 修改时间：2018年1月18日 下午1:53:02   <br>  
     * 修改备注：     <br> 
     * @param testRunnable 测试Runnable
     * @param runnerCount 线程数量
     */
    protected void testRunnable(TestRunnable testRunnable, Integer runnerCount){
        //Rnner数组，想当于并发多少个。 
 		TestRunnable[] trs = new TestRunnable[runnerCount]; 
 		for (int i = 0; i < runnerCount; i++) { 
 		   trs[i] = testRunnable; 
 		} 
 		       // 用于执行多线程测试用例的Runner，将前面定义的单个Runner组成的数组传入 
 		MultiThreadedTestRunner mttr = new MultiThreadedTestRunner(trs); 
 		try { 
 		               // 开发并发执行数组里定义的内容 
 		   mttr.runTestRunnables(); 
 		} catch (Throwable e) { 
 		   e.printStackTrace(); 
 		}   
    }
}
